/**
 * 
 */
package cn.dgfy.MyBatisStudy.dao;

import org.apache.ibatis.annotations.CacheNamespaceRef;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.ResultType;
import org.apache.ibatis.annotations.Select;

import cn.dgfy.MyBatisStudy.bean.Major;

/**
 * @author Tearfalls
 *
 */
/*
 * @@CacheNamespaceRef：在Java API和Mapper XML混合使用的情况下，指明Java API接口定义部分引用Mapper XML文件中对二级缓存的定义
 */
@CacheNamespaceRef(cn.dgfy.MyBatisStudy.dao.MajorMapper.class)
public interface MajorMapper {
	@Select("SELECT id, code, name FROM major WHERE id = #{id}")
	@ResultType(Major.class)
	@Options(useCache = true)
	public Major getById(@Param("id") Integer id);
	
	/*
	 * 以联合查询SQL语句查询出指定的专业信息（包括该专业对应的所有学生信息），并一次性封装于Major对象
	 */
	public Major getByIdIncludeStudentsJointQuery(Integer id);
	
	/*
	 * 以分步查询的方式先查询出出指定的专业信息（不包括该专业对应的所有学生信息），而后再查询出对应学生的相关信息，而后再组合封装为完整的Major对象
	 */
	public Major getByIdIncludeStudentsStepQuery(Integer id);
}
